package study.java.jdk.jdk8._1_stream.collectors.to_map;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import study.java.jdk.jdk8.DataUtils;
import study.java.jdk.jdk8.User;

import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

@Slf4j
public class _2_toMap_Test {

    private List<User> userLt = DataUtils.buildUserLt();

    /**
     * ==============================
     * （1）键映射
     * （2）值映射
     * （3）合并函数
     * ==============================
     *
     * @param keyMapper     Function （key的映射函数）
     * @param valueMapper   Function （value的映射函数）
     * @param mergeFunction BinaryOperator （key 冲突时，调用的合并方法）
     */
    @Test
    public void test1() {
        //key 冲突的解决办法，这里选择第二个 key 覆盖第一个 key
        Map<String, User> dest = userLt.stream()
                .collect(Collectors.toMap(User::getCode,
                        Function.identity(),
                        (v1, v2) -> v2));
        log.info("{}", dest);
    }
}
